/* 
    fs-文件系统--操作文件--文件-增删改查---提供是回调函数

*/
let fs = require("fs");

// 文件系统--提供promsie 的api
let fsp = require("fs/promises");

// 异步地将数据写入文件，如果文件已经存在，则替换该文件
// fs.writeFile("./test.js", "consooe.log(1)", function (err) {
//   console.log("创建文件成功");
//   console.log(err);//null 创建成功err为null，创建失败，err 有值
// });
// fs.writeFile("./test.html", "<div>aa</div>", function () {
//   console.log("创建文件成功");
// });

// 异步地将数据追加到文件，如果该文件尚不存在，则创建该文件
// fs.appendFile("./test.js", "\nconsole.log(22);", function (err) {
//   console.log(err);
//   console.log("添加成功了");
// });

// 异步地读取文件的全部内容
// fs.readFile("./test.js", (err, data) => {
//   // 如果err有值，说明读取失败
//   //   if (err) throw err;
//   console.log(err);
//   console.log(data); //缓冲区数据--十六进制数据
//   console.log(data.toString()); //转为 utf8编码数据
// });

// 异步地删除文件
// fs.rm("./test.html", (err) => {
//   console.log("删除成功");
//   console.log(err);
// });

// fs异步创建文件夹--文件夹不存在创建成功，如果存在，就创建失败
// fs.mkdir("./js", function (err) {
//   console.log(err);
// });

// 异步地删除文件夹
// fs.rmdir("./js", (err) => {
//   console.log("删除成功");
//   console.log(err);
// });

// fsp
//   .writeFile("./a.js", 'console.log("a");')
//   .then((r) => {
//     console.log(r);
//     console.log("then");
//   })
//   .catch((err) => {
//     console.log(err);
//     console.log("catch");
//   });

// fsp.readFile("./a.js").then((r) => {
//   console.log(r);
//   console.log(r.toString());
// });
// promise api 结合 async 和 await 可以没有回调函数
async function box() {
  let r = await fsp.readFile("./test.js");
  console.log(r);
  console.log(r.toString());
}
box();
